# 경도와 위도 상자 좌표 계산 함수
fn_lon_lat_box <- function(lon, lat, dist = 1){
h <- 0.0035 *3.5 * dist
w <- 0.0035 * 4 * dist
c(lon - w, lat - h, lon + w, lat + h)
}Save a ggplot
지도
# 경도와 위도로 표시할 중심 좌표와 거리
boxLocation <- fn_lon_lat_box(127.385, 36.375, 8)
# 지도 다운로드
krMap <- get_map(location = boxLocation, source = 'stamen')
#> ℹ Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.
# 지도 표시
ggmap(krMap)상가(상권)정보 - 대전
- 파일 : 소상공인시장진흥공단_상가(상권)정보_대전_202303.csv
# Data
store.file <- './data/소상공인시장진흥공단_상가(상권)정보_대전_202303.csv'
data.store <- read.csv(store.file, header = T, fileEncoding = 'UTF-8')
data.store %>% head()
#> 상가업소번호 상호명 지점명 상권업종대분류코드 상권업종대분류명
#> 1 MA0101202210A0068117 줄또웰빙 G2 소매
#> 2 MA0101202210A0090669 개성칼국수 I2 음식
#> 3 MA010120220805430751 엘모바일 G2 소매
#> 4 MA010120220805431091 정성약국 G2 소매
#> 5 MA010120220805431125 다비치안경원 G2 소매
#> 6 MA010120220805431202 베리도넛 I2 음식
#> 상권업종중분류코드 상권업종중분류명 상권업종소분류코드 상권업종소분류명
#> 1 G205 식료품 소매 G20508 건강보조식품 소매업
#> 2 I201 한식 I20105 국수/칼국수
#> 3 G208 가전·통신 소매 G20802 핸드폰 소매업
#> 4 G215 의약·화장품 소매 G21501 약국
#> 5 G216 안경·정밀기기 소매 G21602 안경렌즈 소매업
#> 6 I210 기타 간이 I21001 빵/도넛
#> 표준산업분류코드 표준산업분류명 시도코드 시도명 시군구코드
#> 1 G47217 건강 보조식품 소매업 30 대전광역시 30110
#> 2 I56112 한식 면 요리 전문점 30 대전광역시 30140
#> 3 G47312 통신기기 소매업 30 대전광역시 30170
#> 4 G47811 의약품 및 의료용품 소매업 30 대전광역시 30140
#> 5 G47822 안경 및 렌즈 소매업 30 대전광역시 30110
#> 6 I56191 제과점업 30 대전광역시 30110
#> 시군구명 행정동코드 행정동명 법정동코드 법정동명 지번코드 대지구분코드
#> 1 동구 30110640 용전동 3011011500 용전동 3.011012e+18 1
#> 2 중구 30140550 목동 3014010300 목동 3.014010e+18 1
#> 3 서구 30170640 둔산2동 3017011200 둔산동 3.017011e+18 1
#> 4 중구 30140710 유천2동 3014011500 유천동 3.014012e+18 1
#> 5 동구 30110515 중앙동 3011012000 중동 3.011012e+18 1
#> 6 동구 30110515 중앙동 3011011300 소제동 3.011011e+18 1
#> 대지구분명 지번본번지 지번부번지 지번주소 도로명코드
#> 1 대지 145 5 대전광역시 동구 용전동 145-5 301102010003
#> 2 대지 14 2 대전광역시 중구 목동 14-2 301404295276
#> 3 대지 970 NA 대전광역시 서구 둔산동 970 301703166019
#> 4 대지 185 1 대전광역시 중구 유천동 185-1 301403000095
#> 5 대지 92 1 대전광역시 동구 중동 92-1 301103164033
#> 6 대지 299 86 대전광역시 동구 소제동 299-86 301104292381
#> 도로명 건물본번지 건물부번지 건물관리번호 건물명
#> 1 대전광역시 동구 동서대로 1641 NA 3.011012e+24 아남빌딩
#> 2 대전광역시 중구 목중로19번길 7 NA 3.014010e+24
#> 3 대전광역시 서구 둔산로 15 NA 3.017011e+24 향촌아파트
#> 4 대전광역시 중구 계백로 1600 NA 3.014012e+24
#> 5 대전광역시 동구 중앙로 198 NA 3.011012e+24
#> 6 대전광역시 동구 수향길 97 NA 3.011011e+24
#> 도로명주소 구우편번호 신우편번호 동정보 층정보 호정보
#> 1 대전광역시 동구 동서대로 1641 300726 34552 NA 8 NA
#> 2 대전광역시 중구 목중로19번길 7 301808 34815 NA NA
#> 3 대전광역시 서구 둔산로 15 302776 35228 NA NA
#> 4 대전광역시 중구 계백로 1600 301833 34966 NA NA
#> 5 대전광역시 동구 중앙로 198 300160 34628 NA 1 NA
#> 6 대전광역시 동구 수향길 97 300080 34615 NA NA
#> 경도 위도
#> 1 127.4327 36.34809
#> 2 127.4113 36.33558
#> 3 127.3763 36.35323
#> 4 127.3979 36.31822
#> 5 127.4312 36.33039
#> 6 127.4371 36.33588# 자료 추출 - 커피전문점
data.cafe <- data.store %>% subset(상권업종소분류명 =='카페')
# 산점도 - ggplot()
ggplot() + geom_point(data = data.cafe, aes(x = 경도, y = 위도, colour = 시군구명))# 지도 표시
ggmap(krMap) + geom_point(data = data.cafe, aes(x = 경도, y = 위도, colour = 시군구명))
#> Warning: Removed 38 rows containing missing values (`geom_point()`).등고선
ggmap(krMap) + stat_density2d(data = data.cafe, aes(x = 경도, y = 위도))
#> Warning: Removed 38 rows containing non-finite values (`stat_density2d()`).밀도
# 밀도
ggmap(krMap) +
stat_density2d(data = data.cafe, aes(x = 경도, y = 위도),
geom = 'polygon', alpha = 0.2)
#> Warning: Removed 38 rows containing non-finite values (`stat_density2d()`).
# 밀도 + 색상
ggmap(krMap) +
stat_density2d(data = data.cafe,
aes(x = 경도, y = 위도, fill = after_stat(level)),
geom = 'polygon', alpha = 0.2) +
scale_fill_gradient(low = 'yellow', high = 'red')
#> Warning: Removed 38 rows containing non-finite values (`stat_density2d()`).선
- 파일 : 차량 주행궤적 데이터
data.file <- 'data/차량 주행궤적 데이터.csv'
data.line <- read.csv(data.file, header = T, fileEncoding = 'CP949')
data.line$차량.ID <- factor(data.line$차량.ID)
head(data.line)
#> 프레임.인덱스 차량.ID 위도 경도 East..TM.좌표. North..TM.좌표. 차선
#> 1 2777 127 36.46245 127.2764 224774.5 429395.6 1
#> 2 2778 127 36.46244 127.2764 224775.6 429394.3 1
#> 3 2779 127 36.46243 127.2764 224776.8 429392.9 1
#> 4 2780 127 36.46242 127.2764 224777.9 429391.6 1
#> 5 2781 127 36.46241 127.2764 224779.0 429390.2 1
#> 6 2782 127 36.46239 127.2765 224780.2 429388.9 1
#> 차선변경여부
#> 1 0
#> 2 0
#> 3 0
#> 4 0
#> 5 0
#> 6 0
# 선 그림 - ggplot()
ggplot() + geom_line(data = data.line, aes(x = 경도, y = 위도, colour = 차량.ID))
# 지도 다운로드
krMap <- get_map(fn_lon_lat_box(127.30, 36.42, 6), source = 'stamen')
#> ℹ Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.
# 선 표시
ggmap(krMap) + geom_path(data = data.line, aes(x = 경도, y = 위도, colour = 차량.ID), size = 2)
#> Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
#> ℹ Please use `linewidth` instead.Maptype
terrainterrain-backgroundtonerwatercolorterrain-labelsterrain-linestoner-2010toner-2011toner-backgroundtoner-hybridtoner-labelstoner-linestoner-lite